package dao;

import java.util.List;
import model.Conta;

public class DAOTest {

    public static void main(String[] args) throws Exception {

        // Obtem o DAOFactory
        DAOFactory javabase = DAOFactory.getInstance("javabase");
        System.out.println("DAOFactory successfully obtained: " + javabase);

        // Obtem o ContaDAO
        ContaDAO contaDAO = javabase.getContaDAO();
        System.out.println("ContaDAO obtida com sucesso: " + contaDAO);

        // Cria uma conta
        Conta conta = new Conta(null, "cliente1", "senha1", (float)10.0);
        contaDAO.create(conta);
        System.out.println("Conta criada com sucesso: " + conta);

        // Cria outra conta
        Conta outraConta = new Conta(null, "cliente2", "senha2", (float)20.0);
        contaDAO.save(outraConta);
        System.out.println("Another User successfully created: " + outraConta);

        // Atualiza conta
        conta.setSenha("novaSenha");
        conta.setSaldo((float)35.0);
        conta.setNomeCliente("cliente3");
        contaDAO.update(conta);
        System.out.println("Conta atualizada com sucesso: " + conta);

        // Lista todas as contas
        List<Conta> contas = contaDAO.list();
        System.out.println("Lista das contas acessadas com sucesso: " + contas);
        System.out.println("Quantida de contas armazenas no banco: " + contas.size());

        // Delete conta
        contaDAO.delete(conta);
        System.out.println("Conta removida com sucesso: " + conta);

        // Obte outra conta usando nomeCliente e senha
        Conta outraContaEncontrada = contaDAO.find("cliente2", "senha2");
        System.out.println("Outra conta foi encontrada: " + outraContaEncontrada);

        // Deleta outra conta
        contaDAO.delete(outraContaEncontrada);
        System.out.println("Outra conta foi removida com sucessso: " + outraContaEncontrada);

        // Lista todas as contas
        contas = contaDAO.list();
        System.out.println("Lista das contas acessadas com sucesso: " + contas);
        System.out.println("Quantida de contas armazenas no banco: " + contas.size());
    }

}
